/**
 *Copyright (c) 2024 watereyes
 * safetymanagement is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan
 * PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package com.koron.purpose.service.api;

import com.koron.common.bean.StaffBean;
import com.koron.common.domain.DataBean;
import com.koron.purpose.bean.ContributoryPlanBean;
import org.springframework.web.multipart.MultipartFile;
import org.swan.bean.MessageBean;

import java.util.List;
import java.util.Map;

public interface ContributoryPlanService {

    /**
     * 列表查询
     * @param corpCode 水司code
     * @param year 年份
     * @param manager 单位code
     * @param page 当前页
     * @param pageSize 每页条数
     * @return
     */
    MessageBean<DataBean<Map>> queryForList(String corpCode, Integer year, String manager, String statusFlag, Integer page, Integer pageSize,String keyword);

    /**
     * 根据ID查询投入计划
     * @param id
     * @return
     */
    MessageBean<Map> queryById(String id);

    /**
     * 根据ID删除投入计划
     * @param id
     * @return
     */
    MessageBean deleteById(String id);

    /**
     * 新增投入计划
     * @param user
     * @param bean 投入计划 信息
     * @param details 投入计划 详细信息
     * @param files 附件
     * @param jobsTasksId 工作任务ID
     * @return
     */
    MessageBean insert(StaffBean user, ContributoryPlanBean bean,
                       String details, MultipartFile[] files, String jobsTasksId, String personCodes);

    /**
     * 修改投入计划
     * @param user
     * @param bean 投入计划 信息
     * @param statusFlag 状态标记(只能传 0-审批中 2-草稿)
     * @param details 投入计划 详细信息
     * @param accessorys 附件JSON字符串
     * @param files 附件
     * @param personCodes 审批人code数组
     * @return
     */
    MessageBean update(StaffBean user, ContributoryPlanBean bean, String statusFlag, String details,
                       String accessorys, MultipartFile[] files, String jobsTasksId, String personCodes);

    /**
     * 编号验重
     * @param serialNumber 编号
     * @return
     */
    MessageBean changeSerialNumber(String id, String serialNumber);

    /**
     * 流程中的业务数据
     * @param ids
     * @return
     */
    MessageBean getProcessData(String ids);

    /**
     * 导出 列表查询
     * @param corpCode 水司code
     * @param year
     * @param manager
     * @return
     */
    List<Map> queryExportForList(String corpCode, String year, String manager, String statusFlag);
}
